package br.com.sigmah.controller.mbeans;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import org.apache.log4j.Logger;
import org.primefaces.event.FlowEvent;

import br.com.sigmah.controller.facade.CursoFacade;
import br.com.sigmah.controller.facade.UtilsFacade;
import br.com.sigmah.controller.utils.CursoVO;
import br.com.sigmah.controller.utils.HoraVO;
import br.com.sigmah.domain.entity.Curso;
import br.com.sigmah.domain.entity.Hora;

@ManagedBean
@RequestScoped
public class CursoController{

    private static Logger logger = Logger.getLogger(CursoController.class.getName());  

	public CursoController(){
		
	}
	
	@ManagedProperty("#{utilsFacade}")
	private UtilsFacade utilsFacade;
	
	@ManagedProperty("#{cursoFacade}")
	private CursoFacade cursoFacade;
	
	private Curso curso;
	
	private List<Curso> listaCurso;
	
	private List<HoraVO> listaHora;

	
	private Curso cursoSelecionado;
	
	private CursoVO cursoVO;
	
	@PostConstruct
	public void init(){
		this.curso = new Curso();
		this.cursoVO = new CursoVO();
		this.listaCurso = cursoFacade.buscar(curso);
		this.listaHora = new ArrayList<HoraVO>();
		HoraVO hora = new HoraVO();
		hora.setHora("1020");
		listaHora.add(hora);
	}
	

	public void salvar(){
		if(curso != null){
			cursoFacade.salvar(curso);
		}
	}
	
	public void buscar(){
		System.out.println("Buscando");
		if(cursoVO.getNome()!=null){
			listaCurso =cursoFacade.buscarPorParametros(cursoVO);
		}
	
	}
	
	public void excluir(){
		if(cursoSelecionado != null){
			cursoFacade.excluir(cursoSelecionado);
		}
	}
	
	public void atualizar(){
		if(cursoSelecionado != null){
			cursoFacade.salvar(cursoSelecionado);
		}
	}
	
	public void onProcess(){
		System.out.println(cursoSelecionado.getNome());

	}
	
	public String onFlowProcess(FlowEvent event) {  
        logger.info("Current wizard step:" + event.getOldStep());  
        logger.info("Next step:" + event.getNewStep());  
      
        return event.getNewStep();  
  
    }  
	
	
	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}


	public UtilsFacade getUtilsFacade() {
		return utilsFacade;
	}


	public void setUtilsFacade(UtilsFacade utilsFacade) {
		this.utilsFacade = utilsFacade;
	}


	public CursoFacade getCursoFacade() {
		return cursoFacade;
	}


	public void setCursoFacade(CursoFacade cursoFacade) {
		this.cursoFacade = cursoFacade;
	}


	public List<Curso> getListaCurso() {
		return listaCurso;
	}


	public void setListaCurso(List<Curso> listaCurso) {
		this.listaCurso = listaCurso;
	}


	public Curso getCursoSelecionado() {
		return cursoSelecionado;
	}


	public void setCursoSelecionado(Curso cursoSelecionado) {
		this.cursoSelecionado = cursoSelecionado;
	}


	public CursoVO getCursoVO() {
		return cursoVO;
	}


	public void setCursoVO(CursoVO cursoVO) {
		this.cursoVO = cursoVO;
	}


	public List<HoraVO> getListaHora() {
		return listaHora;
	}


	public void setListaHora(List<HoraVO> listaHora) {
		this.listaHora = listaHora;
	}
	
	
	
	
}
